package com.study.zouchao.superproject.util.ui;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.text.style.TtsSpan;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

/**
 * Created by Administrator on 2017/6/29.
 */

public class EmptyRecyclerView extends RecyclerView {
    private View emptyView;
    private boolean mHasHeader = false, mHasFooter = false;
    final private AdapterDataObserver observer = new AdapterDataObserver() {
        @Override
        public void onChanged() {
            checkIfEmpty();
        }

        @Override
        public void onItemRangeInserted(int positionStart, int itemCount) {
            checkIfEmpty();
        }

        @Override
        public void onItemRangeRemoved(int positionStart, int itemCount) {
            checkIfEmpty();
        }
    };

    public EmptyRecyclerView(Context context) {
        super(context);
    }

    public EmptyRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public EmptyRecyclerView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    void checkIfEmpty() {
        if (emptyView != null && getAdapter() != null) {
            Log.d("count空列表", getAdapter().getItemCount()+"");
            boolean emptyViewVisible = (getAdapter().getItemCount()==1);
//            if (mHasHeader && mHasFooter)
//                emptyViewVisible = getAdapter().getItemCount() == 3;
//            if(!mHasHeader&&mHasFooter || mHasHeader&&!mHasFooter)
//                emptyViewVisible = getAdapter().getItemCount() == 2;
//            if(!mHasHeader && !mHasFooter)
//                emptyViewVisible = getAdapter().getItemCount() == 1;
            emptyView.setVisibility(emptyViewVisible ? VISIBLE : GONE);
            setVisibility(emptyViewVisible ? GONE : VISIBLE);
        }
    }

    @Override
    public void setAdapter(Adapter adapter) {
        final Adapter oldAdapter = getAdapter();
        if (oldAdapter != null) {
            oldAdapter.unregisterAdapterDataObserver(observer);
        }
        super.setAdapter(adapter);
        if (adapter != null) {
            adapter.registerAdapterDataObserver(observer);
        }

        checkIfEmpty();
    }

    public void setEmptyView(View emptyView) {
        this.emptyView = emptyView;
        checkIfEmpty();
    }

    public void setEmptyView(View emptyView, boolean hasHeader, boolean hasFooter) {
        this.emptyView = emptyView;
        this.mHasHeader = hasHeader;
        this.mHasFooter = hasFooter;
        checkIfEmpty();
    }
}
